package commonco

import (
	"wails/schema/enums/battleenum"
	"wails/schema/enums/busenum"
)

// 废弃, 使用公式不容易出错
// @schema_export --ident=schema --json --config=加成
// @schema_go
// @schema_ts
// @cache_ts
// @alias 加成
// y = x * (1 + Factor) * Multiplier  + Bonus
type C加成 struct {
	// 需要修正的配置字段
	// @alias 字段
	Z字段 string
	// @alias 倍数计算后的加成
	J加成 float64
	// @alias 系数
	X系数 float64
	// @alias 倍数
	B倍数 float64 `value:"1"`
	// 限定配置编号
	// 如果没有限定，修正会作用于所有该配置类型的配置字段。例如修正 行为_行为
	// @alias 配置编号
	P配置编号 string
	// 指定创建者的配置编号
	// @alias 创建者配置编号
	C创建者配置编号 string
	// 指定创建者类型，符合的修正才能发生作用
	// 单位拥有技能，技能创建了
	// @alias 创建者类型
	C创建者类型 battleenum.C创建者类型
}

// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正_浮点数
type C修正_浮点数 struct {
	B修正

	// @alias 方式
	F方式 F浮点数修正方式
	// 修正值
	// @alias 值
	X值 float64
}

// 场景一：修正单位
// 场景二：修正玩家
// 场景三：修正全局
// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正
type B修正 struct {
	// 需要修正的配置编号
	// 继承该编号的配置，将获得同样的修正
	// @alias 修正配置
	X修正配置 string
	// 需要修正的配置的字段路径
	// @alias 修正字段路径
	X修正字段路径 string

	// 修正次数 0-每次请求都修正, 1-只修正一次
	// @alias 修正次数
	X修正次数 int
}

// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正_读取创建者
type B修正_读取创建者 struct {
	B修正
	// @alias 读取创建者类型
	S读取创建者类型 battleenum.C创建者类型
	// @alias 读取创建者属性
	S读取创建者属性 string `_type:"扩展属性"`
	// 如果创建者属性为数组/map，可设置索引
	// @alias 读取创建者属性索引
	S读取创建者属性索引 string
}

// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正_读取业务属性
type B修正_读取业务属性 struct {
	B修正

	// @alias 读取对象类型
	S读取对象 busenum.E对象种类
	// @alias 读取对象属性
	S读取对象属性 string
	// 如果对象属性为数组/map，可设置索引
	// @alias 读取对象属性索引
	S读取对象属性索引 string
}

// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正_对象的创建者
type B修正_效果的创建者 struct {
	B修正

	// @alias 位置
	W位置 *SEffectWhichScope

	// @alias 创建者类型
	S创建者类型 battleenum.C创建者类型
	// @alias 创建者属性
	S创建者属性 string
	// 如果创建者属性为数组/map，可设置索引
	// @alias 创建者属性索引
	S创建者属性索引 string

	// @alias 修正值
	X修正值 *X修正公式
}

// @schema_go
type SEffectWhichScope struct {
	// @alias 效果
	// 往上追溯指定效果
	X效果 string `link:"效果"`
	// @alias 历史
	L历史 battleenum.E效果历史
	// @alias 位置
	W位置 battleenum.EffectScope
}

// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正_读表
type C修正_读表 struct {
	B修正
	// 查找的数据表名称
	// @alias 查找表名
	C查找表名 string
	// @alias 查找创建者类型
	C查找创建者类型 battleenum.C创建者类型
	// @alias 查找创建者属性
	C查找创建者属性 string
	// @alias 查找方式
	C查找方式 Z字段修正索引方式
	// 查找的表字段
	// @alias 查找表字段
	C查找表字段 string
	// @alias 读取表字段
	D读取表字段 string
}

// 如果没有指定技能，需要通过 $最后的技能 获取技能和等级
// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正_读技能表
type C修正_读技能表 struct {
	B修正
	// @alias 索引创建者类型
	S索引创建者类型 battleenum.C创建者类型
	// @alias 索引创建者属性
	S索引创建者属性 string
	// @alias 读取表名
	D读取表名 string
	// @alias 读取索引技能
	D读取索引技能 string
	// @alias 读取取值字段
	D读取取值字段 string
}

// @schema_export --ident=schema --json --config=修正
// @schema_go
// @schema_ts
// @cache_ts
// @alias 修正_代码
type C修正_代码 struct {
	B修正
	// @alias 代码
	D代码 string
}

// @schema_go
// @alias 字段修正索引方式
type Z字段修正索引方式 int

const (
	Z字段修正索引方式_编号 Z字段修正索引方式 = iota
	Z字段修正索引方式_区间
)
